package social.server.historicActivity;

import java.util.Date;

/**
 * Classe responsavel por representar um atividade de emprestimo em andamento no
 * historio do usuario.
 * 
 * @author Grupo: Brunna Amorim, Caio Libanio, Diego de Lima, Dimitre Andrew e
 *         Rafael Cavalcante
 * 
 */
public class LoanOnGoingActivity implements HistoricActivity {

	String userName;
	String itemName;
	String benefitedName;
	String activity;
	Date date;

	/**
	 * Construtor de um objeto "LoanOnGoingActivity".
	 * 
	 * @param userName
	 *            Nome do usuario executor da atividade.
	 * @param itemName
	 *            Nome do item emprestado na atividade.
	 * @param benefitedName
	 *            Nome do beneficiado no emprestimo.
	 */
	public LoanOnGoingActivity(String userName, String itemName,
			String benefitedName) {
		this.userName = userName;
		this.itemName = itemName;
		this.benefitedName = benefitedName;
		this.date = new Date();
		buildActivity();
	}

	@Override
	public Date getDate() {
		return date;
	}

	@Override
	public boolean equals(HistoricActivity activity) {
		if (!LoanOnGoingActivity.class.isInstance(activity)) {
			return false;
		}

		if (userName.equals(((LoanOnGoingActivity) activity).getUserName())
				&& benefitedName.equals(((LoanOnGoingActivity) activity)
						.getBenefitedName())
				&& itemName.equals(((LoanOnGoingActivity) activity)
						.getItemName())) {
			return true;
		}

		return false;
	}

	@Override
	public String getActivity() {
		return activity;
	}

	@Override
	public void buildActivity() {
		activity = userName + " emprestou " + itemName + " a " + benefitedName;
	}

	/**
	 * Retorna o nome do usuario executor da atividade.
	 * 
	 * @return Nome do usuario
	 */
	public String getUserName() {
		return userName;
	}

	/**
	 * Retorna o nome do benieficiado do emprestimo na qual a atividade
	 * representa.
	 * 
	 * @return O nome do beneficiado.
	 */
	public String getBenefitedName() {
		return benefitedName;
	}

	/**
	 * Retorna o nome do item na qual atividade representa o emprestimo.
	 * 
	 * @return O nome do item.
	 */
	public String getItemName() {
		return itemName;
	}
	
	@Override
	public boolean compareDates(Date dateActivity) {
		if (date.compareTo(dateActivity) < 0) {
			return false;
		}
		return true;
	}
}
